import axios from "axios";

//import {closeToast, showConfirmDialog, showLoadingToast, showSuccessToast, Toast} from "vant";
//import {useUserStore} from "../stores/moudles/user";
import {ElMessage} from "element-plus";
import {useUserStore} from "@/store/modlues/user/user.js";

const request =axios.create({
    baseURL:'http://192.168.3.249:8081/api'
})
request.defaults.withCredentials=true
const logout=()=>{
    useUserStore().logout();
    location.reload()
}
/**
 * 请求拦截器
 */
request.interceptors.request.use(
    (config) => {
        const userStore=useUserStore()
        const token=userStore.token
        if(token){
            config.headers.Authorization=token;
        }
        return config
    },
    (err) => Promise.reject(err)
)
/**
 * 响应拦截器
 */
request.interceptors.response.use( (response)=> {
    // apiData 是 api 返回的数据
    const apiData = response.data
    // 二进制数据则直接返回
    const responseType = response.request?.responseType
    if (responseType === "blob" || responseType === "arraybuffer") return apiData
    // 这个 code 是和后端约定的业务 code
    const code = apiData.code
    // 如果没有 code, 代表这不是项目后端开发的 api
    if (code === undefined) {
        ElMessage.error("非本系统的接口")
        return Promise.reject(new Error("非本系统的接口"))
    }
    switch (code) {
        case 200:
            // 本系统采用 code === 0 来表示没有业务错误
            return apiData
        case 40100:
            // Token 过期时
            console.log(code)
            return logout()
        default:
            // 不是正确的 code
            ElMessage.error(apiData.errMsg || apiData.message)
            return Promise.reject(new Error(apiData.errMsg|| apiData.message))
    }

},(error) => {
    ElMessage.error(error.errMsg)
    return Promise.reject(error)
});

export default request